﻿// ***********************************************************************
// Assembly         : Delta_webControl
// Author           : Juan Alberto Cerino Gomez
// Created          : 04-30-2013
//
// Last Modified By : Juan Alberto Cerino Gomez
// Last Modified On : 04-30-2013
// ***********************************************************************
// <copyright file="LinkTemplateTEdit.cs" company="Delta Bussines">
//     Copyright (c) 2013  Delta Bussines. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.UI;
using Delta_util.Clases;
using Delta_entidad.EntidadesControl;
using System.Collections;

namespace Delta_webControl.Templates
{
    /// <summary>
    /// Class LinkTemplateTEdit
    /// </summary>
    public class LinkTemplateTEdit : TemplateField
    {

        /// <summary>
        /// Obtiene o establece el campo con el que se enlaza la clase.
        /// </summary>
        /// <value>The data field.</value>
        public string DataField { get; set; }
        /// <summary>
        /// Constructor de la classe.
        /// </summary>
        public LinkTemplateTEdit()
        {
            this.ItemTemplate = new ItemLinkTemplateTEdit(this);
        }

    }


    /// <summary>
    /// Clase que se encarga de mostrar el link al tipo de editor de la columna, esta clase se usa en el listado de columnas.
    /// </summary>
    public class ItemLinkTemplateTEdit : ITemplate
    {
        /// <summary>
        /// The datos
        /// </summary>
        LinkTemplateTEdit datos;

        /// <summary>
        /// Constructor de la clase.
        /// </summary>
        /// <param name="padre">The padre.</param>
        public ItemLinkTemplateTEdit(LinkTemplateTEdit padre) { datos = padre; }

        /// <summary>
        /// Cuando se implementa mediante una clase, define el objeto <see cref="T:System.Web.UI.Control" /> al que pertenecen los controles secundarios y las plantillas.Estos controles secundarios están a su vez definidos en una plantilla en línea.
        /// </summary>
        /// <param name="container">Objeto <see cref="T:System.Web.UI.Control" /> que contiene las instancias de los controles de la plantilla en línea.</param>
        public void InstantiateIn(System.Web.UI.Control
        container)
        {
            LiteralControl lblinfo = new LiteralControl() { Text = "-" };
            lblinfo.DataBinding += OnDataBinding;
            container.Controls.Add(lblinfo);
        }

        /// <summary>
        /// Called when [data binding].
        /// </summary>
        /// <param name="sender">El componente que generó el evento.</param>
        /// <param name="e">Los datos del parametro.</param>
        private void OnDataBinding(object sender, EventArgs e)
        {
            Control ctrl = (Control)sender;
            string ruta_cargador = System.Configuration.ConfigurationManager.AppSettings["rutaCargador"];
           
            object bound_value_obj = null;

            IDataItemContainer data_item_container = (IDataItemContainer)ctrl.NamingContainer;
            GridView grd = (data_item_container as GridViewRow).Parent.Parent as GridView;
            string tagDG = (string)Utilerias.ObtenerValorGET(grd.Page, "tag");
            if (ruta_cargador != null)
            {
                ruta_cargador = ruta_cargador.Replace("~/", Utilerias.ObtenerHttpServer(ctrl.Page));
                string id = Utilerias.RellenarVariablesEntidad(data_item_container.DataItem, "{id_editor}");


                bound_value_obj = DataBinder.Eval(data_item_container.DataItem, datos.DataField);

                (sender as LiteralControl).Text = "<span style='cursor:pointer;' onClick=\"MostrarVentana('Tipo de editores','" + ruta_cargador +
                                                  "?url=" + Utilerias.Encriptar("Delta_webControl.Admin.FrmListaEditores", ConfigProy.claveKey) +
                                                  "&cl=" + Utilerias.Encriptar(id, ConfigProy.claveKey) + "&tag="+tagDG+"'); \" class='Enlace'>" + bound_value_obj.ToString() + "</span>";
            }
            else
                (sender as LiteralControl).Text = bound_value_obj.ToString();

        }

    }
}
